#ifndef __MATRICES__
#define __MATRICES__

#include <iostream>
#include <assert.h>


class Matrix
{
private:
    int cols, rows;
    float* data;
    int *refcount;

public:
    Matrix(size_t rows = 1, size_t = 1);
    Matrix(const Matrix & m);
    ~Matrix();

    Matrix operator+(const Matrix & a);
    Matrix operator*(const float b);
    Matrix & operator=(const Matrix & a);
    void create(size_t rows, size_t cols);
    friend std::ostream & operator<<(std::ostream & os, const Matrix & ms);
};

#endif